/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.screen;

import java.awt.Color;
import java.awt.Component;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import sys.bean.ProdutoBean;
import sys.dao.ProdutoDao;
import static sys.dao.ProdutoDao.listaReajustesSpac;
import sys.utils.ConexaoMySql;
import sys.utils.Mensagens;
import sys.utils.Utils;
import static sys.utils.Utils.dataCorreta;
import static sys.utils.Utils.escClose;
import static sys.utils.Utils.numParaCalculos;

/**
 *
 * @author Cesar Daniel
 */
public class UIAnalisaReajustes extends javax.swing.JDialog {

    SimpleDateFormat formBancoSpac = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat formBancoMysql = new SimpleDateFormat("yyyy-MM-dd");
    NumberFormat formatoMoeda = NumberFormat.getCurrencyInstance();

    public UIAnalisaReajustes(java.awt.Dialog parent, boolean modal) {
        super(parent, modal);
        initComponents();
        setLocationRelativeTo(null);
        setResizable(false);
        this.setIconImage(new ImageIcon(getClass().getResource("/sys/picture/icon.png")).getImage());
        UIManager.put("Table.alternateRowColor", new java.awt.Color(230, 255, 255));
        dataInicial.setDate(new Date());
        dataFinal.setDate(new Date());
        parametrosIniciais();
        escClose(this);
    }

    public UIAnalisaReajustes(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        setLocationRelativeTo(null);
        setResizable(false);
        this.setIconImage(new ImageIcon(getClass().getResource("/sys/picture/icon.png")).getImage());
        UIManager.put("Table.alternateRowColor", new java.awt.Color(230, 255, 255));
        dataInicial.setDate(new Date());
        dataFinal.setDate(new Date());
        parametrosIniciais();
        escClose(this);
    }

    private void parametrosIniciais() {
        try {
            /*
             se conectar tem mysql com banco ativo. Caso não tenha visualiza apenas pelo entrada de notas
             */
            Connection con = ConexaoMySql.getConection();
            jcbSim.setSelected(true);
            jcbNao.setSelected(false);
        } catch (SQLException ex) {
            jcbNao.setSelected(true);
            jcbSim.setSelected(false);
            btnColetar.setEnabled(false);
        }
    }

    private boolean validaCampos() {
        boolean v = true;
        String msg = "verifique\n";
        if (dataInicial.getDate() == null || dataFinal.getDate() == null) {
            msg += "Data com campo Vazio ou valor invalido! Verifique;\n";
            v = false;
        } else {
            if (dataFinal.getDate().compareTo(dataInicial.getDate()) < 0) {
                msg += "Data Final Maior que Data Inicial;\n";
                v = false;
            }
        }
        if (v == false) {
            Mensagens.msgAtencao(msg);
        }
        return v;
    }

    private void coletarDados() {

        if (Mensagens.confirmar(this, "seria bom atualizarmos a descrição dos produtos, mas isso pode demorar um pouco...\nta afim de fazer agora? ou deixamos pra depois")) {
            final BarraProgresso pb = new BarraProgresso(this);
            SwingWorker worker = new SwingWorker() {

                @Override
                protected Object doInBackground() throws Exception {
                    pb.gerarJanela();
                    try {
                        /*
                         verificando se tem novos produtos para não dar erro de foreingn key
                         */
                        pb.lbDescricao.setText("ATUALIZANDO NOVOS PRODUTOS, AGUARDE...");
                        for (ProdutoBean produto : ProdutoDao.novosProdutosMysql()) {
                            ProdutoDao.incluirProdutoNovo(produto);
                        }
                        /*
                         verificando se tem novos produtos para não dar erro de foreingn key
                         */
                        pb.lbDescricao.setText("ATUALIZANDO PRODUTOS, AGUARDE...");
                        lbProduto.setText("ATUALIZANDO TODOS OS PRODUTOS, AGUARDE...: ");
                        ProdutoDao.atualizaDescProdutos(ProdutoDao.listaAtualizarDescProdutos());

                    } catch (SQLException ex) {
                        Mensagens.msgErro("erro\n" + ex.getMessage());
                    }
                    return null;
                }

                @Override
                protected void done() {
                    pb.fechar();
                    lbProduto.setText("");
                }
            };
            worker.execute();
        } else {

            final BarraProgresso pb = new BarraProgresso(this);
            SwingWorker worker = new SwingWorker() {

                @Override
                protected Object doInBackground() throws Exception {
                    pb.gerarJanela();
                    try {
                        /*
                         verificando se tem novos produtos para não dar erro de foreingn key
                         */
                        pb.lbDescricao.setText("ATUALIZANDO NOVOS PRODUTOS, AGUARDE...");
                        for (ProdutoBean produto : ProdutoDao.novosProdutosMysql()) {
                            ProdutoDao.incluirProdutoNovo(produto);
                        }
                        /*
                         analisando pelo entrada de notas
                         */
                        pb.lbDescricao.setText("ANALISANDO ENTRADA DE NOTAS, AGUARDE...");
                        for (ProdutoBean produto : ProdutoDao.reajusteEntrada()) {
                            ProdutoDao.refreshAlterados(produto);
                        }
                        /*
                         analisando pelo reajuste manual
                         */
                        pb.lbDescricao.setText("ANALISANDO ALTERAÇÃO MANUAL, AGUARDE...");
                        for (ProdutoBean produto : ProdutoDao.reajusteManual()) {
                            ProdutoDao.refreshAlterados(produto);
                        }
                    } catch (SQLException ex) {
                        Mensagens.msgErro("erro\n" + ex.getMessage());
                    }
                    return null;
                }

                @Override
                protected void done() {
                    pb.fechar();
                }
            };
            worker.execute();
        }
    }

    private void atuTabelaSpac() {
        DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
        modelo.setNumRows(0);

        try {
            for (ProdutoBean produto : listaReajustesSpac(formBancoSpac.format(dataInicial.getDate()), formBancoSpac.format(dataFinal.getDate()))) {
                if (produto.getReajusteVenda() < Integer.parseInt(margDes.getText()) || produto.getReajusteVenda() >= Integer.parseInt(margAcr.getText())) {
                    modelo.addRow(new Object[]{
                        dataCorreta(produto.getDataAlteracao()), produto.getDescricao(), formatoMoeda.format(produto.getcAnterior()), formatoMoeda.format(produto.getcAtual()),
                        "% " + produto.getReajusteCusto(), formatoMoeda.format(produto.getvAnterior()), formatoMoeda.format(produto.getvAtual()), produto.getReajusteVenda(), produto.getTipo()
                    });
                }
            }

            tabela.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
                @Override
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

                    Object ref = table.getValueAt(row, 7);
                    if (ref != null && Double.parseDouble(numParaCalculos(ref.toString())) > -5 && Double.parseDouble(numParaCalculos(ref.toString())) < 5) {
                        setForeground(Color.blue);
                    } else if (ref != null && Double.parseDouble(numParaCalculos(ref.toString())) > 5) {
                        setForeground(Color.red);
                    }
                    return this;
                }
            });
        } catch (SQLException | IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    private void atuTabelaNovosProdutos() {
        DefaultTableModel modelo = (DefaultTableModel) tabelaNovosProdutos.getModel();
        modelo.setNumRows(0);
        try {
            for (ProdutoBean produto : ProdutoDao.novosProdutos(formBancoSpac.format(dataInicial.getDate()), formBancoSpac.format(dataFinal.getDate()))) {
                modelo.addRow(new Object[]{
                    produto.getCodigoBarras(), produto.getDescricao(), formatoMoeda.format(produto.getpCusto()).replace("R$", ""),
                    formatoMoeda.format(produto.getpVenda()).replace("R$", ""), formatoMoeda.format(produto.getMarkup()).replace("R$", "") + " %", dataCorreta(produto.getDataCadastro())
                });
            }

            DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();

            centralizado.setHorizontalAlignment(SwingConstants.CENTER);

            tabelaNovosProdutos.getColumnModel().getColumn(0).setCellRenderer(centralizado);
            tabelaNovosProdutos.getColumnModel().getColumn(2).setCellRenderer(centralizado);
            tabelaNovosProdutos.getColumnModel().getColumn(3).setCellRenderer(centralizado);
            tabelaNovosProdutos.getColumnModel().getColumn(4).setCellRenderer(centralizado);
            tabelaNovosProdutos.getColumnModel().getColumn(5).setCellRenderer(centralizado);

        } catch (SQLException | IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    private void atuTabelaMySQL() {

        DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
        modelo.setNumRows(0);

        try {
            for (ProdutoBean produto : ProdutoDao.listaProdReajustados(formBancoMysql.format(dataInicial.getDate()), formBancoMysql.format(dataFinal.getDate()))) {
                if (produto.getReajusteVenda() < Integer.parseInt(margDes.getText()) || produto.getReajusteVenda() >= Integer.parseInt(margAcr.getText())) {
                    modelo.addRow(new Object[]{
                        produto.getDataAlteracao(), produto.getDescricao(), formatoMoeda.format(produto.getcAnterior()).replace("R$", ""),
                        formatoMoeda.format(produto.getcAtual()).replace("R$", ""), formatoMoeda.format(produto.getReajusteCusto()).replace("R$", "") + " %",
                        formatoMoeda.format(produto.getvAnterior()).replace("R$", ""), formatoMoeda.format(produto.getvAtual()).replace("R$", ""),
                        formatoMoeda.format(produto.getReajusteVenda()).replace("R$", "") + " %", produto.getTipo()

                    });
                }
            }

            tabela.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {

                @Override
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                    String ref = table.getValueAt(row, 7).toString();

                    if (Double.parseDouble(Utils.numParaCalculos(ref)) > - 5 && Double.parseDouble(Utils.numParaCalculos(ref)) < 5) {
                        setOpaque(true);
                        setForeground(Color.BLUE);

                    } else if (Double.parseDouble(Utils.numParaCalculos(ref)) > 5) {
                        setOpaque(true);
                        setForeground(Color.RED);
                    }
                    return this;
                }
            });

        } catch (SQLException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jpDataEntrada = new javax.swing.JPanel();
        dataInicial = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/#####", '_');
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        dataFinal = new com.toedter.calendar.JDateChooser("dd/MM/yyyy", "##/##/#####", '_');
        jPanel2 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        margAcr = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        margDes = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTabbedPane = new javax.swing.JTabbedPane();
        jpProdReajustados = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabela = new javax.swing.JTable();
        jpProdutosNovos = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tabelaNovosProdutos = new javax.swing.JTable();
        jPanel4 = new javax.swing.JPanel();
        btnAnalisar = new javax.swing.JButton();
        btnColetar = new javax.swing.JButton();
        btnSair = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jcbSim = new javax.swing.JCheckBox();
        jcbNao = new javax.swing.JCheckBox();
        lbProduto = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("ANALISE DE REAJUSTES");

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));

        jpDataEntrada.setBackground(new java.awt.Color(255, 255, 255));
        jpDataEntrada.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "PERÍODO:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Calibri", 0, 10))); // NOI18N

        dataInicial.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N

        jLabel1.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel1.setText("DATA INICIAL:");

        jLabel2.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel2.setText("DATA FINAL:");

        dataFinal.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N

        javax.swing.GroupLayout jpDataEntradaLayout = new javax.swing.GroupLayout(jpDataEntrada);
        jpDataEntrada.setLayout(jpDataEntradaLayout);
        jpDataEntradaLayout.setHorizontalGroup(
            jpDataEntradaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpDataEntradaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jpDataEntradaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(dataInicial, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE)
                .addGroup(jpDataEntradaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(dataFinal, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        jpDataEntradaLayout.setVerticalGroup(
            jpDataEntradaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpDataEntradaLayout.createSequentialGroup()
                .addGroup(jpDataEntradaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jpDataEntradaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(dataFinal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(dataInicial, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        jPanel2.setBackground(new java.awt.Color(255, 255, 255));
        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "OPÇÕES:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Calibri", 0, 10))); // NOI18N

        jLabel3.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel3.setText("REAJUSTE MAIOR QUE:");

        margAcr.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        margAcr.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        margAcr.setText("0");
        margAcr.setMargin(new java.awt.Insets(2, 7, 2, 7));

        jLabel5.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        jLabel5.setText("%");

        jLabel4.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        jLabel4.setText("REAJUSTE MENOR QUE:");

        margDes.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        margDes.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        margDes.setText("0");
        margDes.setMargin(new java.awt.Insets(2, 7, 2, 7));

        jLabel6.setFont(new java.awt.Font("Calibri", 0, 14)); // NOI18N
        jLabel6.setText("%");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(margDes)
                    .addComponent(margAcr, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel5))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                        .addGap(2, 2, 2)
                        .addComponent(jLabel6)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(margAcr, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel3)
                        .addComponent(jLabel5)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(margDes, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel6))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jTabbedPane.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N

        tabela.setAutoCreateRowSorter(true);
        tabela.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        tabela.setForeground(new java.awt.Color(51, 51, 255));
        tabela.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "DATA", "PRODUTO", "CUSTO ANTE.", "CUSTO ATUAL", "REAJUSTE", "VENDA ANTE.", "VENDA ATUAL", "REAJUSTE", "TIPO"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tabela.setGridColor(new java.awt.Color(204, 204, 204));
        tabela.getTableHeader().setReorderingAllowed(false);
        jScrollPane1.setViewportView(tabela);
        if (tabela.getColumnModel().getColumnCount() > 0) {
            tabela.getColumnModel().getColumn(0).setPreferredWidth(60);
            tabela.getColumnModel().getColumn(1).setPreferredWidth(250);
        }

        javax.swing.GroupLayout jpProdReajustadosLayout = new javax.swing.GroupLayout(jpProdReajustados);
        jpProdReajustados.setLayout(jpProdReajustadosLayout);
        jpProdReajustadosLayout.setHorizontalGroup(
            jpProdReajustadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 978, Short.MAX_VALUE)
        );
        jpProdReajustadosLayout.setVerticalGroup(
            jpProdReajustadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE)
        );

        jTabbedPane.addTab("REAJUSTES PERÍODO", new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find-2.png")), jpProdReajustados); // NOI18N

        jpProdutosNovos.setToolTipText("SELECIONE APENAS A DATA INICIAL. O SISTEMA VAI APRESENTAR TODOS OS PRODUTOS\nNOVOS A PARTIRDA MESMA.");

        tabelaNovosProdutos.setAutoCreateRowSorter(true);
        tabelaNovosProdutos.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        tabelaNovosProdutos.setForeground(new java.awt.Color(51, 51, 255));
        tabelaNovosProdutos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "CODIGO", "DESCRICAO", "PREÇO CUSTO", "PREÇO VENDA", "MARKUP", "DATA CADASTRO"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tabelaNovosProdutos.setGridColor(new java.awt.Color(204, 204, 204));
        jScrollPane2.setViewportView(tabelaNovosProdutos);
        if (tabelaNovosProdutos.getColumnModel().getColumnCount() > 0) {
            tabelaNovosProdutos.getColumnModel().getColumn(1).setPreferredWidth(250);
        }

        javax.swing.GroupLayout jpProdutosNovosLayout = new javax.swing.GroupLayout(jpProdutosNovos);
        jpProdutosNovos.setLayout(jpProdutosNovosLayout);
        jpProdutosNovosLayout.setHorizontalGroup(
            jpProdutosNovosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 978, Short.MAX_VALUE)
        );
        jpProdutosNovosLayout.setVerticalGroup(
            jpProdutosNovosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE)
        );

        jTabbedPane.addTab("PROD. NOVOS PERÍODO", new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find-product.png")), jpProdutosNovos); // NOI18N

        jPanel4.setBackground(new java.awt.Color(255, 255, 255));
        jPanel4.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true));

        btnAnalisar.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        btnAnalisar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/find.png"))); // NOI18N
        btnAnalisar.setText("ANALISAR");
        btnAnalisar.setToolTipText("BUSCA PRODUTOS QUE SOFRERAM REAJUSTE NO PERÍODO");
        btnAnalisar.setPreferredSize(new java.awt.Dimension(120, 30));
        btnAnalisar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAnalisarActionPerformed(evt);
            }
        });
        jPanel4.add(btnAnalisar);

        btnColetar.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        btnColetar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/colete.png"))); // NOI18N
        btnColetar.setText("COLETAR");
        btnColetar.setToolTipText("BUSCA PRODUTOS QUE SOFRERAM REAJUSTE E SALVA EM DATA BASE MYSQL.");
        btnColetar.setPreferredSize(new java.awt.Dimension(120, 30));
        btnColetar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnColetarActionPerformed(evt);
            }
        });
        jPanel4.add(btnColetar);

        btnSair.setFont(new java.awt.Font("Calibri", 0, 13)); // NOI18N
        btnSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sys/picture/sair.png"))); // NOI18N
        btnSair.setText("SAIR");
        btnSair.setPreferredSize(new java.awt.Dimension(120, 30));
        btnSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSairActionPerformed(evt);
            }
        });
        jPanel4.add(btnSair);

        jPanel5.setBackground(new java.awt.Color(255, 255, 255));
        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "DB EXTERNO:", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Calibri", 0, 10))); // NOI18N

        jcbSim.setBackground(new java.awt.Color(255, 255, 255));
        jcbSim.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        jcbSim.setText("SIM");
        jcbSim.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jcbSimActionPerformed(evt);
            }
        });

        jcbNao.setBackground(new java.awt.Color(255, 255, 255));
        jcbNao.setFont(new java.awt.Font("Calibri", 0, 12)); // NOI18N
        jcbNao.setText("NÃO");
        jcbNao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jcbNaoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jcbSim)
                    .addComponent(jcbNao))
                .addContainerGap(18, Short.MAX_VALUE))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addComponent(jcbSim)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jcbNao))
        );

        lbProduto.setFont(new java.awt.Font("Calibri", 0, 11)); // NOI18N
        lbProduto.setForeground(new java.awt.Color(51, 51, 255));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTabbedPane, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jpDataEntrada, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lbProduto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(12, 12, 12)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                            .addComponent(jpDataEntrada, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(lbProduto, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, 372, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnAnalisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAnalisarActionPerformed

        /*
         se jtabbedpane for igual a 0 esta na opção de visualizar reajustes;
         */
        if (jTabbedPane.getSelectedIndex() == 0) {
            jTabbedPane.setSelectedIndex(0);
            if (jcbSim.isSelected()) {
                /*
                 jcbSim, visualizar reajustes com banco mysql
                 */
                if (validaCampos()) {
                    final BarraProgresso pb = new BarraProgresso(this);
                    SwingWorker worker = new SwingWorker() {
                        @Override
                        protected Object doInBackground() throws Exception {
                            pb.gerarJanela();
                            pb.lbDescricao.setText("ATUALIZANDO NOVOS PRODUTOS, AGUARDE...");
                            for (ProdutoBean produto : ProdutoDao.novosProdutosMysql()) {
                                ProdutoDao.incluirProdutoNovo(produto);
                            }
                            pb.lbDescricao.setText("ATUALIZANDO VALORES, APENAS AGUARDE...");
                            atuTabelaMySQL();
                            return null;
                        }

                        @Override
                        protected void done() {
                            pb.fechar();
                        }
                    };
                    worker.execute();
                }
            } /*
             jcbNao, visualizar reajustes diretamente do banco SPAC
             */ else {
                final BarraProgresso pb = new BarraProgresso(this);
                SwingWorker worker = new SwingWorker() {

                    @Override
                    protected Object doInBackground() throws Exception {
                        pb.gerarJanela();
                        pb.lbDescricao.setText("ATUALIZANDO VALORES, APENAS AGUARDE...");
                        atuTabelaSpac();
                        return null;
                    }

                    @Override
                    protected void done() {
                        pb.fechar();
                    }
                };
                worker.execute();

            }
        }
        /*
         se posição jtabbedPane for 1 visualizar novos produtos
         */
        if (jTabbedPane.getSelectedIndex() == 1) {
            jTabbedPane.setSelectedIndex(1);
            final BarraProgresso pb = new BarraProgresso(this);
            SwingWorker worker = new SwingWorker() {

                @Override
                protected Object doInBackground() throws Exception {
                    pb.gerarJanela();
                    pb.lbDescricao.setText("ATUALIZANDO TABELA, APENAS AGUARDE...");
                    atuTabelaNovosProdutos();
                    return null;
                }

                @Override
                protected void done() {
                    pb.fechar();
                }
            };
            worker.execute();
        }


    }//GEN-LAST:event_btnAnalisarActionPerformed

    private void btnColetarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnColetarActionPerformed
        jTabbedPane.setSelectedIndex(0);
        if (Mensagens.confirmar(this, "ATUALIZAR VALOR DOS PRODUTOS REAJUSTADOS?")) {
            coletarDados();
            DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
            modelo.setNumRows(0);
        }

    }//GEN-LAST:event_btnColetarActionPerformed

    private void jcbSimActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcbSimActionPerformed
        jcbNao.setSelected(false);
        btnColetar.setEnabled(true);
    }//GEN-LAST:event_jcbSimActionPerformed

    private void jcbNaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcbNaoActionPerformed
        jcbSim.setSelected(false);
        btnColetar.setEnabled(false);
    }//GEN-LAST:event_jcbNaoActionPerformed

    private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSairActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnSairActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAnalisar;
    private javax.swing.JButton btnColetar;
    private javax.swing.JButton btnSair;
    private com.toedter.calendar.JDateChooser dataFinal;
    private com.toedter.calendar.JDateChooser dataInicial;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane;
    private javax.swing.JCheckBox jcbNao;
    private javax.swing.JCheckBox jcbSim;
    private javax.swing.JPanel jpDataEntrada;
    private javax.swing.JPanel jpProdReajustados;
    private javax.swing.JPanel jpProdutosNovos;
    private javax.swing.JLabel lbProduto;
    private javax.swing.JTextField margAcr;
    private javax.swing.JTextField margDes;
    private javax.swing.JTable tabela;
    private javax.swing.JTable tabelaNovosProdutos;
    // End of variables declaration//GEN-END:variables
}
